package br.com.programacao.concorrente.entidades;
import javax.swing.JOptionPane;
/**
 * Classe principal da Etapa1 do ATPS de programação concorrente
 */
public class Main {
    /**
     * Metodo principal. Inicio da Execução
     *
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            Constantes.NUMBER_EXECUTION = Integer.parseInt(JOptionPane.showInputDialog("Informe o numero da execucao"));
            Constantes.QTD_THREADS = Integer.parseInt(JOptionPane.showInputDialog("Informe a quantidade de Threads"));
            //Pega a instancia do buffer.
            Buffer buffer = Buffer.getInstance();
            if (buffer != null) {

                Consumidor consumer;
                Thread t;
                //loop para criar a iniciar todas as threads testadas
                for (int i = 1; i <= Constantes.QTD_THREADS; i++) {
                    consumer = new Consumidor(buffer, Constantes.NUMBER_EXECUTION);
                    t = new Thread(consumer, String.valueOf(i));
                    t.start();
                }
            } else {
                //Lança a execeção caso o buffer não seja instanciado.
                throw new Exception("Buffer está nulo");
            }
        } catch (Exception e) {
            Log.getLogger(Main.class).error(e);
        }
    }
}
